package com.example.test.listener;

import com.example.test.utils.HttpUtil;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;
import org.activiti.engine.delegate.Expression;
import org.apache.commons.lang3.StringUtils;

/**
 * 执行监听器 ExecutionListener  可以监听开始和结束节点 (start end take)
 * 任务监听器 TaskListener 只能监听带有任务信息的节点，开始和结束节点由于在Activiti中没有任务因此无法监听  （create，assignment，complete，delete）
 * 事件监听器 ActivitiEventListener 可监听ActivitiEvent枚举类中的事件
 *
 * 任务结束后监听器 如果流程结束需要进行业务操作 需要再结束步骤 配置此监听器， 并配置参数 returnUrl
 */
@Slf4j
public class TaskEndListener implements ExecutionListener {

    private Expression returnUrl;

    @Override
    public void notify(DelegateExecution delegateExecution) throws Exception {
        String eventName = delegateExecution.getEventName();
        if (EVENTNAME_END.equals(eventName)){
            String url = (String) returnUrl.getValue(delegateExecution);
            if (StringUtils.isNotBlank(url)){
                System.out.println("returnUrl : " + url);
//                HttpUtil.postForm(url+"?id="+delegateExecution.getProcessBusinessKey(),null,null);
            }
        }
    }
}

